package com.ls.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;

import java.time.LocalDateTime;
import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import static com.ls.constant.SystemConstants.TEMPLATE_CATEGORY_HANG_UP;

/**
 * <p>
 * 短信记录表
 * </p>
 *
 * @author pengyu
 * @since 2024-10-06
 */
@NoArgsConstructor
@Data
@EqualsAndHashCode(callSuper = false)
public class SmsRecord extends Model<SmsRecord> {

    private static final long serialVersionUID = 1L;

    /**
     * 自增主键
     */
    @TableId(value = "sms_record_id", type = IdType.AUTO)
    private Long smsRecordId;
    /**用于查询的短信记录id*/
    private Long recordId;
    /**
     * 通话表主键
     */
    private Long pRecordId;

    /**
     * 客户Id
     */
    private Long customerId;

    /**
     * 客户电话
     */
    private String customerPhone;

    /**
     * 外部人员电话，只能是手机号
     */
    private String outerPhone;

    /**
     * 外部用户姓名
     */
    private String outerName;
    /**
     * 0为挂机短信时call_type生效，1为关怀短信时holiday_id生效，2为物流发送短信，3为预定短信
     */
    private Integer templateCategory;
    /**
     * 节假日ID
     */
    private Long holidayId;
    /**
     * 呼入： 1 拒接 2 未接通 3 已接通 4勿扰；  呼出：5 所有
     */
    private Integer callType;
    /**短信类型 1为发件短信 2为签收短信 3到件 4派件 5售后*/
    private Integer sendStatus;

    /**
     * 短信类型 1 手机短信 2 平台短信
     */
    private Integer smsType;

    /**
     * 短信状态 1 失败 2 发送中 3 成功
     */
    private Integer smsStatus;
    /**
     * 短信记录错误编码
     */
    private String returnCode;
    /**
     * 短信记录错误
     */
    private String returnText;
    /**
     * 短信内容
     */
    private String content;
    /**
     * 短信扣除来源1是会员，2是短信包
     */
    private Integer smsSource;
    /**
     * 短信扣除条数
     */
    private Integer smsReduceNum;

    /**
     * 短信创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 短信发送时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime sendTime;
    /**
     * 短信类型（非数据库字段，仅用于查询返回）
     */
    @TableField(exist = false)
    private String smsTypeName;

    @Override
    protected Serializable pkVal() {
        return this.smsRecordId;
    }

}
